//package com.inspur.edp.udt.rtgenerator.common;
//
//import com.inspur.edp.cef.entity.config.CefConfig;
//import com.inspur.edp.cef.entity.config.MgrConfig;
//import com.inspur.edp.cef.entity.entity.ICefData;
//import com.inspur.edp.cef.gencommon.config.CefConfigManager;
//import com.inspur.edp.cef.rtgenerator.CefGenerator;
//import com.inspur.edp.cef.rtgenerator.common.*;
//import com.inspur.edp.cef.rtgenerator.utils.GeneratorUtil;
//import com.inspur.edp.udt.api.Manager.IUdtManager;
//import com.inspur.edp.udt.api.Udt.IUnifiedDataType;
//import com.inspur.edp.udt.core.Manager.AbstractUdtManager;
//import com.inspur.edp.udt.core.Udt.AbstractUdt;
//import com.inspur.edp.udt.rtgenerator.UdtGenerator;
//
//import java.util.ArrayList;
//
//public class UdtTypeManager extends CefTypeManager
//{
//	private static UdtTypeManager privateInstance= new UdtTypeManager();
//	public static UdtTypeManager getInstance()
//	{
//		return privateInstance;
//	}
//
//	private UdtTypeManager()
//	{
//	}
//
//	@Override
//	protected CefMgrTypeInfo getBasicMgrTypeInfo()
//	{
//		CefMgrTypeInfo tempVar = new CefMgrTypeInfo();
//		tempVar.setInterfaceType(IUdtManager.class);
//		tempVar.setImplType(AbstractUdtManager.class);
//		tempVar.setGeneratedImplType(AbstractUdtManager.class);
//		CefEntityTypeInfo entityTypeInfo=new CefEntityTypeInfo();
//		entityTypeInfo.setActionImplType(AbstractUdt.class);
//		entityTypeInfo.setActionInterfaceType(IUnifiedDataType.class);
//		entityTypeInfo.setDataInterfaceType(ICefData.class);
//		entityTypeInfo.setGeneratedImplType(AbstractUdt.class);
//		//Java版临时屏蔽：
////		tempVar.setEntityEntityTypeInfo =entityTypeInfo;
//		return tempVar;
//	}
//
//	@Override
//	protected CefGenerator getCefGenerator(java.util.ArrayList<MgrConfig> mgrConfigs, CefMgrTypeInfo parentTypeInfo, CefConfig cefConfig)
//	{
//		return new UdtGenerator(mgrConfigs, parentTypeInfo, cefConfig);
//	}
//
//	@Override
//	protected CefConfigManager getConfigManager()
//	{
//		return new UdtConfigManager();
//	}
//
//	@Override
//	protected CefGenerator getCefGenerator(java.util.ArrayList<MgrConfig> mgrConfigs,
//										   CefMgrTypeInfo parentTypeInfo,
//										   CefConfig cefConfig,
//										   String generatedPath,
//										   String serverPath,
//										   CompileContext compileContext)
//	{
//		return new UdtGenerator(mgrConfigs, parentTypeInfo, cefConfig, generatedPath, serverPath,compileContext);
//	}
//
//	@Override
//	protected GeneratedContext buildGeneratedContext( CefConfig config, String configId, CefMgrTypeInfo typeInfo)
//	{
//		IntermediateType managerImplType = new IntermediateType(GeneratorUtil.getName(config.getID())+ "Manager", config.getDefaultNamespace());
//		IntermediateType reposImplType = new IntermediateType(GeneratorUtil.getName(config.getID()) + "Repository", config.getDefaultNamespace());
//
//		try {
//			typeInfo.setGeneratedImplType(Class.forName(managerImplType.getFullName()));
//			typeInfo.setGeneratedRepositoryType(Class.forName(reposImplType.getFullName()));
//		} catch (ClassNotFoundException e) {
//			throw new RuntimeException("获取类失败",e);
//		}
//
//		GeneratedContext tempVar = new GeneratedContext();
////		tempVar.GeneratedAssembly = assembly;
//		tempVar.setCefConfig (config);
//		tempVar.setManagerImplType(managerImplType);
//		tempVar.setCurrentTypeInfo(typeInfo);
//		tempVar.setRepositoryType(reposImplType);
//		try {
//			Class nestedRepositoryClass = Class.forName(tempVar.getRepositoryType().getFullName());
//			tempVar.setNestedRepositoryClass(nestedRepositoryClass);
//		} catch (ClassNotFoundException e) {
//			e.printStackTrace();
//			throw new RuntimeException("UdtTypeManager.setNestedRepositoryClass");
//		}
//		return tempVar;
//	}
//
//	public static  void Test()
//	{
//		java.util.ArrayList<MgrConfig> mgrConfigs=new ArrayList<>();
//		CefMgrTypeInfo parentTypeInfo=UdtTypeManager.getInstance().getBasicMgrTypeInfo();
//		com.inspur.edp.cef.entity.config. CefConfig cefConfig=new CefConfig();
//
//		MgrConfig mgrConfig=new MgrConfig();
//		mgrConfig.setAllInterfaceAssembly("com.inspur.gs.scm.sd.salesorder0806.vo.frmsalesorder0806.api");
//		mgrConfig.setAllInterfaceClassName("com.inspur.gs.scm.sd.salesorder0806.vo.frmsalesorder0806.api.IfrmSalesOrder0806Service");
//		mgrConfig.setAssembly("com.inspur.gs.scm.sd.salesorder0806.vo.frmsalesorder0806.api");
//		mgrConfig.setClass("com.inspur.gs.scm.sd.salesorder0806.vo.frmsalesorder0806.api.IfrmSalesOrder0806Manager");
//		mgrConfig.setImpClass("com.inspur.gs.scm.sd.salesorder0806.vo.frmsalesorder0806.core.frmSalesOrder0806VmManager");
//		mgrConfigs.add(mgrConfig);
//
//		cefConfig.setID("com.inspur.gs.scm.sd.salesorder0807.udt.udt1.Udt1");
//		cefConfig.setSourceID("");
//		cefConfig.setDefaultNamespace("com.inspur.gs.scm.sd.salesorder0807.udt.udt1.udt1Gen");
//		cefConfig.setMgrConfig(new com.inspur.edp.cef.entity.config.MgrConfig());
//		cefConfig.getMgrConfig().setAssembly("com.inspur.gs.scm.sd.salesorder0807.udt.udt1.Udt1.api");
//		cefConfig.getMgrConfig().setClass("com.inspur.gs.scm.sd.salesorder0807.udt.udt1.Udt1.api.IUdt1BEManager");
//		cefConfig.getMgrConfig().setImpClass("com.inspur.gs.scm.sd.salesorder0807.udt.udt1.Udt1.core.Udt1Manager");
//		cefConfig.getMgrConfig().setAllInterfaceAssembly("com.inspur.gs.scm.sd.salesorder0807.udt.udt1.Udt1.api");
//		cefConfig.getMgrConfig().setAllInterfaceClassName("com.inspur.gs.scm.sd.salesorder0807.udt.udt1.Udt1.api.IUdt1Service");
//
//		cefConfig.setRepositoryConfig(new com.inspur.edp.cef.entity.config.RepositoryConfig());
//		cefConfig.getRepositoryConfig().setAssembly("com.inspur.gs.scm.sd.salesorder0807.udt.udt1.Udt1.core");
//		cefConfig.getRepositoryConfig().setClass("Udt1RepoAssembler");
//
//		UdtGenerator fsGenerator=new UdtGenerator(mgrConfigs,parentTypeInfo,cefConfig);
//		fsGenerator.initialize();
//		fsGenerator.generate();
//	}
//}